/*
题目：
一个数如果恰好等于它的因子之和，这个数就称为"完数"。
例如6=1＋2＋3，编程找出1000以内的所有完数。

分析：
对n进行分解质因数，应先找到一个最小的质数k，然后按下述步骤完成：
(1)如果这个质数恰等于（小于的时候，继续执行循环）n，则说明分解质因数的过程已经结束，另外 打印出即可。
(2)但n能被k整除，则应打印出k的值，并用n除以k的商,作为新的正整数n.重复执行第二步。
(3)如果n不能被k整除，则用k+1作为k的值,重复执行第一步。

议点：
上面是对分解质因数的解法，而不是求因数，如8的分解质因数是16=2*2*2*2，但16的因子有1、2、4、8
题解应该是设正整数a，找出所有能整除a的正整数(除了a)，如果所有这些正整数的和等于a，则a符合要求
*/

#include<stdio.h>

int main(int argc, char const *argv[])
{
    for (int i = 2; i <= 1000; i++)
    {
        int n = i, sum = 1;
        for (int j = 2; j < i; j++)
        {
            if(i%j==0)
            {
                sum += j;
            }
        }
        if (i == sum)
        {
            printf("%d = 1", i);
            for (int j = 2; j < i; j++)
            {
                if(i%j==0)
                {
                    printf("+%d", j);
                }
            }
            printf("\n");
        }
    }
    return 0;
}
